#pragma once
#include <glm/glm.hpp>
#include <string>
#include "engine/platform/texture.h"

namespace kanon
{
    struct Sprite2D
    {
        virtual uint32_t num_indices() const = 0;
        virtual uint32_t num_vertices() const = 0;
    };

    struct ColoredQuad
    {
        glm::vec2 pos;
        glm::vec2 size;
        glm::vec4 color;
    };

    struct SpriteQuad
    {
        glm::vec2 pos;
        glm::vec2 size;
        glm::vec4 color;
        std::shared_ptr<Texture2D> texture;
        // glm::vec4 uvs; // support texture subregions.

        uint32_t num_vertices() const { return 4; }
        uint32_t num_indices() const { return 6; }
    };
}
